package design.patterns.mementomode.checkpointmemento;

import java_thinking.unit_18_IO.exercise.CloneUtil;

import java.util.ArrayList;
import java.util.List;

/**
 * @Desc:   备忘录角色，可以存储任意多的状态，外界可以使用检查点指数 index 来取出检查点上的状态
 * @author: cww
 * @DateTime: 2020-06-13 18:09
 */

public class Memento {

    /**
     * 检查点
     */
    private List<String> states;
    private int index;

    public Memento(List<String> states, int index) {
        // 相当于克隆一个检查点，否则会造成客户端和备忘录对象持有对同一个 list 对象的引用
        this.states = new ArrayList<>(CloneUtil.cloneTo(states));
        this.index = index;
    }

    public List<String> getStates() {
        return states;
    }

    public int getIndex() {
        return index;
    }
}
